    var _AJAX = function(uri, onCompletion_CB) {
        // onCompletion_CB is a callback used to process the response text.

        var xhro = null,
            logger = console.log,  // for now use console.log.. later we'll use the monitor/channel api
            domBody = _DOM.select({htmlTag: 'body'}, null)[0];

        var handleRequestStateChange = ( function(cb) {
        
            return ( function() {
                if (xhro.readyState != 4) {
                    logger('AJAX Request status: ', xhro.readyState);
                }
                else {
                    // reset busy cursor to default
                    _DOM.update.style(domBody, { cursor: 'default'});
                    // read  the response if http status is 'OK'
                    if ( xhro.status == 200 ) {
                       try {
                         logger('AJAX Request status: 4 (complete)');
                         cb(xhro.responseText);		// process the response
                       }
                       catch(e) {
                         logger('AJAX ERROR… reading the response:', e.toString());
                       }
                    }
                    else {
                       logger('ERROR... retrieving the response:', xhro.statusText);
                       // reset busy cursor to default
                       _DOM.update.style(domBody, { cursor: 'default'});
                    }
                  }
            } );
        } )(onCompletion_CB);  // handleRequestStateChange

        try {
            // assume browser is FF, Safari, Chrome or IE7 or newer
            xhro = new XMLHttpRequest();
        }
        catche(e) {
            logger("AJAX Error.. unable to create request");
            return false;
        }

        // we have a request object, now initiate the request to get the data
        try {
           xhro.open('GET', uri, true);  // we should chk the mod type (is it a .js or a .css )
           xhro.onreadystatechange = handleRequestStateChange;
           xhro.send(null);

           // set the busy cursor... change later to a progress bar
           _DOM.update.style(domBody, { cursor: 'wait'});
           return true;
        }
        catch(e) {
           logger("AJAX Error.. cannot connect to server " +e.toString());
           // set busy cursor back to the default
           _DOM.update.style(domBody, { cursor: 'default'});
           return false;
        }
    };  // _AJAX
